home *** CD-ROM | disk | FTP | other *** search
/ Especial Multimedia / Especial Multimedia.iso / Multimed / Presenta / FORMDEMO.ZIP / KILLMAIN.SX_ / KILLMAIN.SX
Text File  |  1997-09-14  |  4KB  |  167 lines

  1. /////////////////////////////////////////
  2. // KILL MUNGER The demo game
  3. /////////////////
  4.  
  5. start:
  6.     mouse mode OFF
  7.     call init_bitmaps
  8.     call init_sounds
  9.  
  10.     badass = new script "killbdss.sxt"
  11.     badass call initialize: @badass_bitmaps
  12.  
  13.     smx,smy = GRAPHICS_XMAX/2,GRAPHICS_YMAX/2
  14.     mouse position smx,smy
  15.  
  16.     badass call draw_frame
  17.     bmx,bmy = smx,smy
  18.     badass call update_pos: bmx,bmy
  19.  
  20.     fire_scripts = new list
  21.     fire_sprites = new list
  22.     soldier_scripts = new list
  23.     soldier_sprites = new list
  24.  
  25.     time = TIME
  26.     soldier_time = TIME
  27.  
  28.     win_message = 0
  29.     while win_message != WM_KEYDOWN
  30.         peekmessage win_message, wpm, pmx, pmy
  31.         switch win_message
  32.  
  33.             case WM_LBUTTONDOWN
  34.                 play sound shoot rate shoot_rate
  35.                 call fire_gun
  36.  
  37.             case WM_MOUSEMOVE
  38.                 mx = pmx - smx
  39.                 my = pmy - smy
  40.                 if mx || my
  41.                     bmx = bmx + mx
  42.                     bmy = bmy + my
  43.                     mouse position smx,smy
  44.  
  45.         if TIME > time + 5
  46.             for n = fire_scripts.size - 1 to 0 step -1
  47.                 shot_script = fire_scripts get n
  48.                 k = shot_script call update_fire
  49.                 if k
  50.                     fire_scripts remove n
  51.                     fire_sprites remove n
  52.             free shot_script
  53.             free shot_sprite
  54.  
  55.             t = bound bmx,bmy to 0,GRAPHICS_XMAX; 0,GRAPHICS_YMAX mode CLIP
  56.             badass call update_pos: bmx,bmy
  57.             nx = soldier_sprites.size - 1
  58.             for n = nx to 0 step -1
  59.                 soldier = soldier_scripts get n
  60.                 soldier call update_pos
  61.                 soldite = soldier_sprites get n
  62.                 tst = collision EXTERNAL sprite soldite
  63.                 if tst
  64.                     for m = fire_sprites.size-1 to 0 step -1
  65.                         shot_sprite = fire_sprites get m
  66.                         tst = collision EXTERNAL sprite soldite sprite shot_sprite
  67.                         if tst
  68.                             soldier_scripts remove n
  69.                             soldier_sprites remove n
  70.                             play sound explode rate explode_rate
  71.                             fire = fire_scripts get m
  72.                             fire call blast
  73.                             //free fire
  74.                             break
  75.             free shot_sprite
  76.             free soldier
  77.             free soldite
  78.             time = TIME
  79.  
  80.         if TIME > soldier_time + 200 && soldier_scripts.size < 6
  81.             soldier = new script "killsold.sxt"
  82.             soldite = soldier call initialize: @soldier_bitmaps
  83.             soldier_scripts add soldier
  84.             soldier_sprites add soldite
  85.             soldier call draw_frame
  86.             free soldier
  87.             free soldite
  88.             soldier_time = TIME
  89.  
  90.         update sprites
  91.  
  92.     mouse mode ON
  93.     return
  94.  
  95. fire_gun:
  96.     x,y,ix,iy = badass call shoot
  97.     shot_script = new script "killfire.sxt"
  98.     shot_sprite = shot_script call initialize: @fire_bitmaps,x,y,ix,iy
  99.     fire_scripts add shot_script
  100.     fire_sprites add shot_sprite
  101.     free shot_script
  102.     free shot_sprite
  103.  
  104. ///////////////////////////////////
  105. // INITIALIZATIONS
  106. /////////////
  107.  
  108. init_bitmaps:
  109.     bitmap_list = new list
  110.     palette_list = new list
  111.     files = new byte[10][32]
  112.  
  113.     $files[0] = "ball_red";"ball_grn";"ball_blu";""
  114.     soldier_bitmaps = call load_bitmaps
  115.  
  116.     $files[0] = "km_shot";"km_exp";"km_dust";""
  117.     fire_bitmaps = call load_bitmaps
  118.  
  119.     $files[0] = "km_ball";"km_f1";"km_f2";""
  120.     badass_bitmaps = new list
  121.     bl1 = call load_bitmaps
  122.     badass_bitmaps add bl1
  123.  
  124.     call remap_palettes
  125.  
  126.     bl2 = new list
  127.     call mirror_bitmaps: @bl1, @bl2
  128.     badass_bitmaps add bl2
  129.  
  130. /////////////////////////
  131. init_sounds:
  132.     load "shoot.wav" sound shoot rate shoot_rate
  133.     load "explode.wav" sound explode rate explode_rate
  134.  
  135. //////////////////////////
  136. load_bitmaps:
  137.     return_list = new list
  138.     for n = 0 to 9
  139.         if files[n][0] == 0
  140.             break 
  141.         load $files[n], ".gif" bitmap bmp palette pal
  142.         return_list add bmp
  143.         bitmap_list add bmp
  144.         palette_list add pal
  145.     return @return_list
  146.  
  147. ///////////////////////////
  148. mirror_bitmaps: list1, list2
  149.     for n = 0 to list1.size-1
  150.         bm1 = list1 get n
  151.         copy bm2 = bm1
  152.         flip HORIZONTAL bitmap bm2
  153.         list2 add bm2
  154.  
  155. /////////////////////////
  156. remap_palettes:
  157.     for n = 0 to bitmap_list.size-1
  158.         pal = palette_list get n
  159.         compose palette pal
  160.  
  161.     for n = 0 to bitmap_list.size-1
  162.         bmp = bitmap_list get n
  163.         pal = palette_list get n
  164.         remap bitmap bmp palette pal
  165.  
  166. ///////////////////////////
  167. /////////////////////